﻿var Oferta;
$(document).ready(function () {
    Oferta = {
        //Contenedor
        Container: $("#Oferta"),

        //Sub-Contenedor
        Toolbar: "#toolbar",
        Lista: "#lista",
        Formulario: "#formulario",

        //URL
        URL_LISTA: URL_PAGE + "Empresa/Ofertas/Listar",
        URL_FORMULARIO: URL_PAGE + "Empresa/Ofertas/Formulario",
        URL_REGISTRAR: URL_PAGE + "Empresa/Ofertas/Registrar",
        URL_ELIMINAR: URL_PAGE + "Empresa/Ofertas/Eliminar",

        //Parametros
        IdEmpresa: 0,
        IdOferta: 0,

        //Botones del toolbar
        BtnToolbar: {
            Nuevo: "#Nuevo"
        },


        //Botones del Formulario
        BtnFormulario: {
            Aceptar: "#Aceptar",
            Cancelar: "#Cancelar"
        },

        ToolbarC: {
            //Hace referencia al Objeto ToolbarC (Toolbar)
            obj: '',

            //Hace referencia al Objeto padre
            self: '',

            Init: function (self) {
                this.self = self;
                this.obj = self.Toolbar;

                this.obj.find(this.self.BtnToolbar.Nuevo).click(function () {
                    self.Form.Load($(this).attr("data-idempresa"));
                    self.Formulario.slideDown("slow");
                })

            }
        },

        //Listado de los registros
        Listar: function () {
            var self = this;

            $.ajax({
                type: "POST",
                data: { idempresa: this.IdEmpresa },
                url: self.URL_LISTA,
                cache: false,
                success: function (html) {
                    //Mostrando la lista de los registros                        
                    self.Lista.html(html);
                }
            });
        },


        Form: {
            //Hace referencia al Objeto Form (Formulario)
            obj: '',

            //Hace referencia al Objeto padre
            self: '',

            //Cargando el formulario
            Load: function (IdEmpresa, IdOferta) {
                data = { idempresa: IdEmpresa, idoferta: IdOferta };
                this.Onload(data);
            },

            Onload: function (data) {
                var self = this.self;
                $.ajax({
                    type: "POST",
                    data: data,
                    url: self.URL_FORMULARIO,
                    cache: false,
                    success: function (html) {
                        //Pintando el formulario
                        self.Formulario.html(html);

                        //Obteniendo el formulario y seteandolo
                        var form = self.Formulario.find("form");
                        form.attr("action", self.URL_REGISTRAR);
                        self.Form.obj = form;
                    }
                });
            },

            Init: function (self) {

                this.self = self;

                var form = self.Formulario.find("form");
                self.Form.obj = form;
                form.attr("action", self.URL_REGISTRAR);

                //Validando los datos antes de ser enviados
                self.Form.ValidateForm(form);

                //form quitando
                form.expire();

                //Configuracion del Envio de datos del formulario
                form.livequery('submit', function () {
                   

                    //Si la validacion no es exitosa entonces no se realiza el submit
                    if (!$(this).valid()) {
                        return false;
                    }

                    $(this).ajaxSubmit({
                        success: function (responseText, statusText, xhr, $form) {
                            //Listando y Recargando el formulario y ocultandolo
                            self.Listar();
                            /***
                            self.Formulario.slideDown("slow", function () {
                            self.Form.Load();
                            });
                            */
                            //alert("1234");
                            self.Formulario.hide("slow");
                        }
                    });
                    return false;
                });

                //Configurando los botones
                //Funcion de Cancelar
                form.find(self.BtnFormulario.Cancelar).livequery("click", function () {
                    self.Formulario.slideUp("slow", function () {
                        self.Form.Load();
                    });
                });
            },

            //Validando los datos que esta ingresados en el formulario
            ValidateForm: function (form) {
                form.livequery(function () {
                    $(this).validate({

                        rules: {
                            bolsaempresa_id: {
                                required: true
                            },
                            titulo: {
                                required: true
                            },
                            bolsaareas_id: {
                                required: true
                            },
                            contenido: {
                                required: true
                            },
                            fecha: {
                                required: true
                            },
                            salario: {
                                required: true
                            },
                            comienzo: {
                                required: true
                            },
                            duracion: {
                                required: true
                            },
                            tipotrabajo: {
                                required: true
                            },
                            solicitudes: {
                                required: true
                            },
                            contacto: {
                                required: true
                            },
                            telefono: {
                                required: true
                            },
                            correo: {
                                required: true
                            },
                            sitioweb: {
                                required: true
                            },
                            fechapublicacion: {
                                required: true
                            },
                            ultimafechaenvio: {
                                required: true
                            },
                            fechaenviopractica: {
                                required: true
                            }
                        },

                        messages: {
                            bolsaempresa_id: {
                                required: "Seleccione una empresa"
                            },
                            titulo: {
                                required: "Coloque un titulo"
                            },
                            bolsaareas_id: {
                                required: "Seleccione una area"
                            },
                            contenido: {
                                required: "Coloque un contenido"
                            },
                            fecha: {
                                required: "Coloque una fecha"
                            },
                            salario: {
                                required: "Coloque un salario"
                            },
                            comienzo: {
                                required: "Coloque una fecha de comienzo"
                            },
                            duracion: {
                                required: "Coloque duración del trabajo"
                            },
                            tipotrabajo: {
                                required: "Seleccione un tipo de trabajo"
                            },
                            solicitudes: {
                                required: "Coloque las solicitudes"
                            },
                            contacto: {
                                required: "Coloque un contacto"
                            },
                            telefono: {
                                required: "Coloque un telefono"
                            },
                            correo: {
                                required: "Coloque un correo"
                            },
                            sitioweb: {
                                required: "Coloque el sitio web"
                            },
                            fechapublicacion: {
                                required: "Coloque una fecha de pubilcación"
                            },
                            ultimafechaenvio: {
                                required: "Coloque la ultima fecha de envio"
                            },
                            fechaenviopractica: {
                                required: "Coloque la Fecha de envio de practica"
                            }
                        }
                    });
                });
            }
        },

        Init: function (IdEmpresa) {
            var self = this;

            self.IdEmpresa = IdEmpresa;

            //Inicializando datos        
            self.Lista = self.Container.find(self.Lista);
            self.Toolbar = self.Container.find(self.Toolbar);
            self.Formulario = self.Container.find(self.Formulario);

            //Inicializando el formulario
            self.Form.Init(self);
            self.ToolbarC.Init(self);
        }
    }
});